 #define _CRT_SECURE_NO_WARNINGS 1

//#include <iostream>
//#include <cstring>
//using namespace std;
//#define N 10001
//
//int main() {
//    int a[26], b[26];
//    char A[N], B[N];
//    while (cin >> A >> B) {
//        int i, j, flag = 1;
//        int lenA = strlen(A);
//        int lenB = strlen(B);
//        memset(a, 0, sizeof(a));
//        memset(b, 0, sizeof(b));
//        for (i = 0; i < lenA; i++) {
//            j = A[i] - 'A';
//            a[j]++;
//        }
//        for (i = 0; i < lenB; i++) {
//            j = B[i] - 'A';
//            b[j]++;
//        }
//        for (i = 0; i < 26; i++) {
//            if ((a[i] == 0 && b[i] != 0) || b[i] > a[i]) {
//                flag = 0;
//                break;
//            }
//        }
//        if (flag)
//            cout << "Yes" << endl;
//        else
//            cout << "No" << endl;;
//    }
//    return 0;
//}


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool isBro(string s1, string s2)
{
    if (s1 != s2 && s1.size() == s2.size())
    {
        sort(s1.begin(), s1.end());
        sort(s2.begin(), s2.end());
        if (s1 == s2)
            return true;
    }
    return false;
}

int main() {

    string s;
    int n;
    while (cin >> n)
    {
        vector<string> strs, sbro;
        string str;
        int k;
        for (int i = 0; i < n; i++)
        {
            cin >> s;
            strs.push_back(s);
        }
        cin >> str;
        cin >> k;
        sort(strs.begin(), strs.end());
        for (int i = 0; i < strs.size(); i++)
            if (isBro(strs[i], str))
                sbro.push_back(strs[i]);
        cout << sbro.size() << endl;
        if (k <= sbro.size())
            cout << sbro[k - 1] << endl;
    }
    return 0;
}
